/*
 * @Description: 正则表达式 source
 * @Author: zzj
 * @Date: 2021-09-10 09:13:58
 * @LastEditors: zzj
 * @LastEditTime: 2021-09-10 09:56:42
 */

/*
直接量字符
重点：
\d  匹配任意阿拉伯数字。等价于[0-9]
\D  匹配任意一个不是阿拉伯数字的字符。等价于[^0-9]。
\w  匹配任意来自基本拉丁字母表中的字母数字字符，还包括下划线。等价于 [A-Z a-z 0-9 _]。
\W	匹配任意不是基本拉丁字母表中单词（字母数字下划线）字符的字符。等价于 [^A-Za-z0-9_]。
\s  匹配一个空白符，包括空格、制表符、换页符、换行符和其他 Unicode 空格。
\S  匹配一个非空白符。

\t  匹配一个水平制表符（tab）
\r  匹配一个回车符（carriage return）
\n  匹配一个换行符（linefeed） //反引号回车
\v  匹配一个垂直制表符（vertical tab）
\f  匹配一个换页符（form-feed）
 */

/*
数量词:
x*  匹配前面的模式 x 0 或多次。
x+  匹配前面的模式 x 1 或多次。等价于 {1,}。
x?  匹配前面的模式 x 0 或 1 次。
x{n}  n 是一个正整数。前面的模式 x 连续出现 n 次时匹配
x{n,}  n 是一个正整数。前面的模式 x 连续出现至少 n 次时匹配。
x{n,m} n 和 m 为正整数。前面的模式 x 连续出现至少 n 次，至多 m 次时匹配。
x*?  像上面的 * 一样匹配前面的模式 x，然而匹配是最小可能匹配。
x+?  像上面的 + 一样匹配前面的模式 x，然而匹配是最小可能匹配。
x|y  匹配 x 或 y
 */
var reg= /^\w{3,20}@(163)|(qq)\.(com)|(cn)$/;
// var reg2 = /d+?/;
var str='xiaoing@163.com';
// console.log(reg2.exec(str));

if(reg.test(str)){
    console.log('yes');
}
else{
    console.log('no');}